package Controlador;
import java.awt.Window;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowEvent;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Vector;

import javax.swing.JOptionPane;

import Vista.VistaMenu;
import Vista.VistaProducto;
import Modelo.Ingrediente;
import Modelo.IngredienteporProducto;
import Modelo.Producto;
import Modelo.Accion;


public class CntrlProducto implements ActionListener,ItemListener{
	
	VistaProducto vistaProd;
	Accion accion=new Accion();
	private Vector<IngredienteporProducto> detalles;
	
	public CntrlProducto(VistaProducto vistaproducto)
	{
		vistaProd=vistaproducto;
		detalles=new Vector<IngredienteporProducto>();
		
		
	}
	
	
	public void actionPerformed(ActionEvent ae) {
		String opcion=(String)ae.getActionCommand();
		if(opcion.equals("Registrar")){
			String cat=accion.ObtenerCodCategoria(vistaProd.cmbCategorias.getSelectedItem().toString());
			
			Producto producto= new Producto(vistaProd.txtCodigo.getText(),cat,vistaProd.txtNombre.getText(),Float.parseFloat(vistaProd.txtPrecio.getText()));
		    accion.registrarProducto(producto);
		    accion.registrarDetalleProd(detalles);
		    detalles.clear();
		    JOptionPane.showMessageDialog(null, "El Producto ha sido registrado", 
					"REGISTRO Producto", 
					JOptionPane.INFORMATION_MESSAGE);
		    limpiar();
		
		}
		
		if(opcion.equals("Registrar Ingrediente")){
			String codIng=accion.obtenerCodIngrediente(vistaProd.cmbIngredientes.getSelectedItem().toString());
			IngredienteporProducto ingredientes=new IngredienteporProducto(vistaProd.txtCodigo.getText(),codIng,Float.parseFloat(vistaProd.txtCantidad.getText())); 
			
			String nombreIngrediente=vistaProd.cmbIngredientes.getSelectedItem().toString();
			vistaProd.listaModel.addElement(ingredientes.getCantidadIngrediente()+"  "+nombreIngrediente);
			detalles.add(ingredientes);
		    JOptionPane.showMessageDialog(null, "El ingrediente  ha sido registrado", 
					"REGISTRO Producto", 
					JOptionPane.INFORMATION_MESSAGE);
			
		}
		if(opcion.equals("Buscar")){
			boolean encontrado;
			String cat=accion.ObtenerCodCategoria(vistaProd.cmbCategorias.getSelectedItem().toString());
			Producto producto;
			
		    encontrado=accion.consultarProducto(vistaProd.txtCodigo.getText());
		      if(encontrado){
		    	  
		    	  producto=accion.ObtenerProducto(vistaProd.txtCodigo.getText());
		    	  vistaProd.txtNombre.setText(producto.getNombreProducto());
		    	  vistaProd.txtPrecio.setText(String.valueOf(producto.getPrecio()));
		  
		    }
		    else{
		    	JOptionPane.showMessageDialog(null, "El Producto no ha sido registrado", 
						"REGISTRO Producto", 
						JOptionPane.INFORMATION_MESSAGE);
		    	//vistaProd.btnRegistrar.setEnabled(true);
		    	activar();
		    }
		}
		if(opcion.equals("Modificar")){
			String cat=accion.ObtenerCodCategoria(vistaProd.cmbCategorias.getSelectedItem().toString());
			Producto producto= new Producto(vistaProd.txtCodigo.getText(),cat,vistaProd.txtNombre.getText(),Float.parseFloat(vistaProd.txtPrecio.getText()));
		   accion.modificarProducto(vistaProd.txtCodigo.getText(),producto);
		   JOptionPane.showMessageDialog(null, "El Producto ha sido modificado ", 
					"REGISTRO Producto", 
					JOptionPane.INFORMATION_MESSAGE);
		}
		if(opcion.equals("Eliminar")){
		    accion.eliminarProducto(vistaProd.txtCodigo.getText());
		    JOptionPane.showMessageDialog(null, "El Producto ha sido eliminado", 
					"REGISTRO Producto", 
					JOptionPane.INFORMATION_MESSAGE);
		}
		
		if(opcion.equals("Limpiar")){
			limpiar();
		}
		
		if(opcion.equals("    Salir   ")){
			vistaProd.dispose();
		}
		
				
	}
	
	private boolean validarCampos(){
		boolean sw= false;
		if ((!vistaProd.txtCodigo.getText().equals("")) && (!vistaProd.txtNombre.getText().equals("")) && (!vistaProd.txtPrecio.getText().equals("")))
		    sw=true;
		return sw;
		
	}

	private void limpiar() {
		vistaProd.txtCodigo.setEditable(true);
		vistaProd.btnBuscar.setEnabled(true);
		vistaProd.txtCodigo.setText("");
		vistaProd.txtNombre.setText("");
		vistaProd.txtPrecio.setText("");
		vistaProd.txtCantidad.setText("");
		vistaProd.listaModel.clear();
		desActivar();
	}
	private void desActivar(){
		vistaProd.txtNombre.setEnabled(false);
		vistaProd.txtNombre.setEditable(false);
		vistaProd.btnRegistrar.setEnabled(false);
		vistaProd.btnEliminar.setEnabled(false);
		vistaProd.txtCodigo.requestFocus(true);
	}
	private void activar(){
		vistaProd.txtNombre.setEnabled(true);
		vistaProd.txtNombre.setEditable(true);
		vistaProd.btnLimpiar.setEnabled(true);
		vistaProd.btnRegistrar.setEnabled(true);
		vistaProd.btnEliminar.setEnabled(true);
		vistaProd.txtNombre.requestFocus(true);
	}
	
	
	@Override
	public void itemStateChanged(ItemEvent arg0) {
		vistaProd.repaint();
		
	}
}	

